home *** CD-ROM | disk | FTP | other *** search
/ MPEG Toolkit / MPEG Toolkit.iso / os2 / mpegenc / src / fsize.c < prev    next >
C/C++ Source or Header  |  1997-01-01  |  3KB  |  125 lines

  1. /*===========================================================================*
  2.  * fsize.c                                     *
  3.  *                                         *
  4.  *    procedures to keep track of frame size                     *
  5.  *                                         *
  6.  * EXPORTED PROCEDURES:                                 *
  7.  *    Fsize_Reset                                 *
  8.  *    Fsize_Note                                 *
  9.  *    Fsize_Validate                                 *
  10.  *                                         *
  11.  * EXPORTED VARIABLES:                                 *
  12.  *    Fsize_x                                     *
  13.  *    Fsize_y                                     *
  14.  *                                         *
  15.  *===========================================================================*/
  16.  
  17. /*
  18.  * Copyright (c) 1993 The Regents of the University of California.
  19.  * All rights reserved.
  20.  *
  21.  * Permission to use, copy, modify, and distribute this software and its
  22.  * documentation for any purpose, without fee, and without written agreement is
  23.  * hereby granted, provided that the above copyright notice and the following
  24.  * two paragraphs appear in all copies of this software.
  25.  *
  26.  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
  27.  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
  28.  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
  29.  * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30.  *
  31.  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
  32.  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  33.  * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  34.  * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
  35.  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  36.  */
  37.  
  38.  
  39. /*==============*
  40.  * HEADER FILES *
  41.  *==============*/
  42.  
  43. #include "all.h"
  44. #include "fsize.h"
  45. #include "dct.h"
  46.  
  47.  
  48. /*==================*
  49.  * GLOBAL VARIABLES *
  50.  *==================*/
  51. int Fsize_x = 0;
  52. int Fsize_y = 0;
  53.  
  54.  
  55. /*=====================*
  56.  * EXPORTED PROCEDURES *
  57.  *=====================*/
  58.  
  59. /*===========================================================================*
  60.  *
  61.  * Fsize_Reset
  62.  *
  63.  *    reset the frame size to 0
  64.  *
  65.  * RETURNS:    nothing
  66.  *
  67.  * SIDE EFFECTS:    Fsize_x, Fsize_y
  68.  *
  69.  *===========================================================================*/
  70. void
  71. Fsize_Reset()
  72. {
  73.     Fsize_x = Fsize_y = 0;
  74. }
  75.  
  76.  
  77. /*===========================================================================*
  78.  *
  79.  * Fsize_Validate
  80.  *
  81.  *    make sure that the x, y values are 16-pixel aligned
  82.  *
  83.  * RETURNS:    modifies the x, y values to 16-pixel alignment
  84.  *
  85.  * SIDE EFFECTS:    none
  86.  *
  87.  *===========================================================================*/
  88. void
  89. Fsize_Validate(x, y)
  90.     int *x;
  91.     int *y;
  92. {
  93.     *x &= ~(DCTSIZE * 2 - 1);
  94.     *y &= ~(DCTSIZE * 2 - 1);
  95. }
  96.  
  97.  
  98. /*===========================================================================*
  99.  *
  100.  * Fsize_Note
  101.  *
  102.  *    note the given frame size and modify the global values as appropriate
  103.  *
  104.  * RETURNS:    nothing
  105.  *
  106.  * SIDE EFFECTS:    Fsize_x, Fsize_y
  107.  *
  108.  *===========================================================================*/
  109. void
  110. Fsize_Note(id, width, height)
  111.     int id;
  112.     int width;
  113.     int height;
  114. {
  115.     if (Fsize_x == 0) {
  116.     Fsize_x = width;
  117.     Fsize_y = height;
  118.     Fsize_Validate(&Fsize_x, &Fsize_y);
  119.     } else if (width < Fsize_x || height < Fsize_y) {
  120.     fprintf(stderr, "Frame %d: wrong size: (%d,%d).  Should be greater or equal to: (%d,%d)\n",
  121.         id, width, height, Fsize_x, Fsize_y);
  122.     exit(1);
  123.     }
  124. }
  125.